کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش خواندن فایل XML با کلاس XmlDocument در C#

آموزش خواندن فایل های XML با کلاس XMLDocument در زبان C# :

همانطور که در درس قبلی اشاره کردیم، کلاس XMLDocument حافظه بیشتری از کلاس XMLReader مصرف کرده و به طبع کند تر از آن می باشد. اما به هر حال، به چند دلیل، کار با کلاس XMLDocument کمی ساده تر بوده و در برخی موارد نیاز به نوشتن کد کمتری خواهد داشت.
به محض این که محتویات فایل XML را خواندید، می توانید اطلاعات درون آن را به روش درختی (hierarchical) مورد ارزیابی قرار دهید، دقیقا همانند ساختار فایل های XML که در آن هر المنت دارای چندین عنصر فرزند یا child بوده و هر child نیز می تواند چندین عنصر فرزند داشته باشد و به همین ترتیب.
در درس قبلی، اطلاعات را از یک فایل XML مربوط به بانک مرکزی اروپا خواندیم که درباره نرخ های ارز و تغییرات آن ها داده هایی را ارائه می دهد. در این درس هم به انجام این کار خواهیم پرداخت، اما با استفاده از کلاس XMLDocument به جای XMLReader.
اطلاعات فایل XML را می توانید از آدرس +آ درس دریافت نموده و داده ای که در آن نیاز داریم، در عنصر قرار داد. ساختار درختی فایل XML مثال، چیزی همانند کد زیر است :

< gesmes:Envelope >
    [other child nodes]
    < Cube >
        < Cube time="2011-04-12" >
            < Cube currency="USD" rate="1.4470"/ >
            < Cube currency="JPY" rate="121.87"/ >
            …
            

المنت ، المنت اصلی یا root element فایل است، که می توان توسط خاصیت DocumentElement به آن دسترسی داشت.
در مرحله بعدی، می توانیم با استفاده از خاصیت ChildNodes Collection به عنصرهای فرزند المنت اصلی دسترسی پیدا کنیم. در مثال این درس، قصد داریم تا به عنصرهای فرزند یا child در سه رده یا level زیر المنت اصلی دسترسی پیدا کنیم. این کار را با استفاده از کد مثال عملی زیر می توان انجام داد، دقیقا مشابه کاری که در درس قبل با کلاس XMLReader انجام دادیم :

 using System;
using System.Text;
using System.Xml;

namespace ParsingXml
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load("www.ecb.int/stats/eurofxref/eurofxref-daily.xml");
            foreach(XmlNode xmlNode in xmlDoc.DocumentElement.ChildNodes[2].ChildNodes[0].ChildNodes)
                Console.WriteLine(xmlNode.Attributes["currency"].Value + ": " + xmlNode.Attributes["rate"].Value);
            Console.ReadKey();
        }
    }
}             
            

همانطور که در کد مثال مشاهده می کنید، ما به عنصر Cube nodes با پایین تر رفتن از ساختار درختی ChildNodes hierarchy دسترسی پیدا کرده ایم. از المنت اصلی فایل که DocumentElement نام دارد، سراغ المنت سوم فرزند child node (دارای اندیس بر پایه صفر) را گرفته ایم. سپس به دنبال اولین فرزند این المنت یا first child node گشته و در نهایت کلیه عناصر فرزند این عنصر یا Collection of child nodes را درخواست کرده ایم.
بدیهی است کد فوق به دلیل این که ما با ساختار فایل XML مثال آشنا هستیم، کاربرد داشته و برای مراحل بعدی در آینده چندان انعطاف پذیر و مناسب نیست.
به هر حال روشی که شما برای پیدایش یک فایل XML به کار خواهید برد، بستگی زیادی به سورس فایل XML و نوع اطلاعاتی که دنبال آن هستید، دارد.
کد مثال این درس، تنها در صورتی که حجم محدودی از اطلاعات داشته باشیم، کار خواهد کرد اما برای اهداف بزرگ تر، نیازمند نوشتن کد بهتری هستیم تا خوانایی برنامه افزایش پیدا کند.
به دلیل این که ما دارای یک گره یا node به نام Currency rate هستیم و می توانیم به دو خاصیت یا properties آن دسترسی داشته و آن را در خروجی چاپ کنیم، کد فوق مثال خوبی است همانند درس قبل.

1395/08/10 9285 2092
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...